1 Introduction

This data report uses two different datasets to estimate the greenhouse gas emissions of the Hampshire County under three different definitions:

  • total annual territorial CO2 emissions for the period 2005 to 2019 using local authority level data from BEIS
  • total annual territorial CO2e emissions (i.e. all emissions, including methane and others) using the territorial emissions method with data from the Centre for Sustainable Energy’s Impact Tool at the local authority level (see methodology report for details of how each category was estimated and the years from which the data is drawn)
  • total annual consumption CO2e emissions (i.e. all emissions) using the consumption emissions method with data from the Centre for Sustainable Energy’s Impact Tool at the local authority level

For the avoidance of doubt the Hampshire County is taken to mean all local authority districts in the Hampshire County including the unitary authorities of Portsmouth, Southampton and the Isle of Wight.

2 Data

# BEIS LA co2 data
beis_la_co2_DT <- data.table::fread(paste0(params$dataPath,
 "beis/localAuthority/carbon/",                                "2005-19_Local_Authority_CO2_emissions.csv"))

beis_la_co2_DT[, subSectorLabel := `LA CO2 Sub-sector`]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Agriculture",
     "Industry: Agriculture",
     subSectorLabel)
     ]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Large Industrial Installations",
     "Industry: Large Industrial Installations",
     subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (A roads)",
     "Transport: (A roads)",
     subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (Minor roads)",
     "Transport: (Minor roads)",
     subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (Motorways)",
     "Transport: (Motorways)",
     subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Diesel Railways",
     "Transport: Diesel Railways",
     subSectorLabel)
]
beis_la_co2_DT[, la_name := `Local Authority`]


# set up the colours

# colours borrowed from https://git.soton.ac.uk/twr1m15/la_emissions_viz/-/blob/master/shiny/app.R
# for details, use set for each sector
industry_pal <- RColorBrewer::brewer.pal(n = 8, name = "Greys")[4:8]    # industry greys, 5 categories incl Agric
commercial_pal <- RColorBrewer::brewer.pal(n = 8, name = "RdPu")[4:6]    # commercial greys, 3 categories
domestic_pal <- RColorBrewer::brewer.pal(n = 4, name = "Blues")[2:4]    # domestic blues, 3 categories
public_pal <- RColorBrewer::brewer.pal(n = 4, name = "Purples")[2:4]    # public purple, 3 categories
transport_pal <- RColorBrewer::brewer.pal(n = 6, name = "Oranges")[2:6] # transport oranges, 5 categories
lulucf_pal <- RColorBrewer::brewer.pal(n = 9, name = "Greens")[4:9]     # lulucf greens, 6 categories

# for details, combine sets
detailed_pal <- c(commercial_pal, domestic_pal, industry_pal, lulucf_pal, public_pal, transport_pal)

beis_la_co2_DT[, subSectorLabelFact := factor(subSectorLabel)]

catList <- unique(beis_la_co2_DT$subSectorLabelFact) # this is not alphabetical - why?

catList2 <- c(catList[1:15],catList[25] , catList[16:24])

names(detailed_pal) <- catList2

hampshire_beis_la_co2_DT <- getSolent(beis_la_co2_DT)

t <- hampshire_beis_la_co2_DT[, .('Number of emissions categories' = .N), keyby = .(District = la_name, Year = as.character(`Calendar Year`))]
makeFlexTable(dcast(t, District ~ Year), cap = "Data coverage for BEIS CO2 emissions data")
## Using 'Number of emissions categories' as value column. Use 'value.var' to override

Table 2.1 shows the numnber of emissions categories for each district over time. Where this value is less than 24 this implies some categories had no emissions for this district.

# CSE impact tool data
cse_territorial_abs_DT <- data.table::fread(paste0(params$dataPath,
 "cse/cse_ImpactTool/",                                "local-authority-all-territorial-absolute.csv.gz"))
cse_territorial_abs_DT[, la_name := name]
hampshire_cse_territorial_abs_DT <- getSolent(cse_territorial_abs_DT)

# make long form for easy summary etc
hampshire_cse_territorial_abs_DT <- melt(hampshire_cse_territorial_abs_DT)
## Warning in melt.data.table(hampshire_cse_territorial_abs_DT): id.vars and
## measure.vars are internally guessed when both are 'NULL'. All non-numeric/
## integer/logical type columns are considered id.vars, which in this case are
## columns [id, name, la_name, ...]. Consider providing at least one of 'id' or
## 'measure' vars in future.
t <- hampshire_cse_territorial_abs_DT[, .('Number of emissions categories' = .N), keyby = .(District = la_name)]
makeFlexTable(t, cap = "Data coverage for CSE territorial emissions data")
cse_consumption_abs_DT <- data.table::fread(paste0(params$dataPath,
 "cse/cse_ImpactTool/",                                "local-authority-all-consumption-absolute.csv.gz"))
cse_consumption_abs_DT[, la_name := name]
hampshire_cse_consumption_abs_DT <- getSolent(cse_consumption_abs_DT)

# make long form for easy summary etc
hampshire_cse_consumption_abs_DT <- melt(hampshire_cse_consumption_abs_DT)
## Warning in melt.data.table(hampshire_cse_consumption_abs_DT): id.vars and
## measure.vars are internally guessed when both are 'NULL'. All non-numeric/
## integer/logical type columns are considered id.vars, which in this case are
## columns [id, name, la_name, ...]. Consider providing at least one of 'id' or
## 'measure' vars in future.
t <- hampshire_cse_consumption_abs_DT[, .('Number of emissions categories' = .N), keyby = .(District = la_name)]
makeFlexTable(t, cap = "Data coverage for CSE consumptions emissions data")

3 Territorial CO2 emissions only (BEIS data)

These are calculated under the territorial emissions method and include only CO2 emissions. Beis have produced a useful mapping tool which can be used to compare the spatial distribution of different emissions sources at district level.

3.1 Latest totals for ‘Hampshire’

Table 3.1 shows the total emissions for 2019.

t <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019, .(`Total kT CO2e` = sum(`Territorial emissions (kt CO2)`, na.rm = TRUE))]
makeFlexTable(t, cap = "BEIS CO2 emissions (kT, Hampshire, 2019)")
sumBEIS_kt <- sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019]$`Territorial emissions (kt CO2)`)

Table 3.2 shows the total emissions for 2019 by category. Figure 3.1 shows the data as a bar plot. The categroies have been colour-coded so that related categories have similar colours in the palette. The largest emissions sources under this method are clearly visible (domestic gas and transport).

hampshire_beis_terr_Totals <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019, .(`Total kT CO2` = sum(`Territorial emissions (kt CO2)`, na.rm = TRUE)), keyby = .(subSectorLabelFact)]

absTotal <- sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019, abs(`Territorial emissions (kt CO2)`)])
                
hampshire_beis_terr_Totals[, `% of gross` := 100*(`Total kT CO2`/absTotal)]

makeFlexTable(hampshire_beis_terr_Totals, cap = "BEIS CO2 emissions by category (Hampshire, 2019)")
ggplot2::ggplot(hampshire_beis_terr_Totals, aes(x = reorder(subSectorLabelFact, -`Total kT CO2`), 
                       y = `Total kT CO2`,
                       fill = subSectorLabelFact)) +
  geom_col() +
  scale_fill_manual(values = detailed_pal) +
  theme(legend.position = "none") +
  labs(x = "LA CO2 Sub-sector") +
  coord_flip()
BEIS CO2 emissions by category (Hampshire, 2019 ordered by emissions value)

Figure 3.1: BEIS CO2 emissions by category (Hampshire, 2019 ordered by emissions value)

# p <- ggplot2::ggplot(subsetDT, aes(x = `Calendar Year`, y = `Territorial emissions (kt CO2)`,
#                             fill = subSectorLabel,
#                             colour = subSectorLabel)) +
#   geom_col(position = "stack") +
#   scale_colour_manual(values = detailed_pal) +
#   scale_fill_manual(values = detailed_pal) #
# p

Figure 3.2 shows a cumulative emissions plot for the BEIS 2019 data ordered by the emissions source’s magnitude. The largest increments are therefore due to domestic gas use various forms of transport. The plot shows the sources which comprise 50%, 75% and 90% of the total emissions. The plot curls due to the source categories with negative emissions such that the final point represents the total ‘net’ emissions.

t <- hampshire_beis_terr_Totals[order(-`Total kT CO2`)]
t[, cumulative := cumsum(`Total kT CO2`)]

pc_50 <- 0.5*(sum(t$`Total kT CO2`))
pc_75 <- 0.75*(sum(t$`Total kT CO2`))
pc_90 <- 0.90*(sum(t$`Total kT CO2`))

p <- ggplot2::ggplot(t, aes(x = reorder(subSectorLabelFact, -`Total kT CO2`), 
                       y = cumulative,
                       colour = subSectorLabelFact)) +
  geom_point() +
  ylim(0,NA) +
  scale_colour_manual(values = detailed_pal) +
  theme(legend.position = "none") +
  labs(x = "LA CO2 Sub-sector",
       y = "Cumulative kT CO2/annum",
       cap = "Vertical lines % of net emissions") +
  coord_flip()

# add reference lines
p + 
  geom_hline(aes(yintercept = pc_50), colour = "grey") +
  geom_hline(aes(yintercept = pc_75), colour = "grey") +
  geom_hline(aes(yintercept = pc_90), colour = "grey") +
  annotate("text", x = "Transport Other", y = pc_50, label = "50%", colour = "grey") +
  annotate("text", x = "Transport Other", y = pc_75, label = "75%", colour = "grey") +
  annotate("text", x = "Transport Other", y = pc_90, label = "90%", colour = "grey")
Plot of cumulative emissions (BEIS, 2019)

Figure 3.2: Plot of cumulative emissions (BEIS, 2019)

3.3 Totals for local authority districts

To do

4 Territorial-based emissions (CSE data)

These are calculated under the territorial emissions method and include all greenhouse gas emissions.

4.1 Latest totals for ‘Hampshire’

Table 4.1 shows the total emissions for 2019.

t <- hampshire_cse_territorial_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000)]
makeFlexTable(t, cap = "CSE territorial emissions (Hampshire, 2019)")
sumCSETerr_kt <- sum(hampshire_cse_territorial_abs_DT$value)/1000

Table 4.2 shows the total emissions for 2019 by category. Figure 4.1 shows the data as a bar plot. The largest emissions sources under this method are clearly visible (domestic gas, transport and pwoer generation). Note that some of the categories do not exactly match those used in the BEIS data. Ignore the (t CO2e) in the label - the plot shows kT for easy comparison.

hampshire_cse_terr_Totals <- hampshire_cse_territorial_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000), keyby = .(variable)]

absTotal <- sum(hampshire_cse_territorial_abs_DT[, abs(value)])/1000
                
hampshire_cse_terr_Totals[, `% of gross` := 100*(`Total kT CO2e`/absTotal)]

makeFlexTable(hampshire_cse_terr_Totals, cap = "CSE all territorial emissions by category (Hampshire, 2019)")
ggplot2::ggplot(hampshire_cse_terr_Totals, aes(x = reorder(variable, -`Total kT CO2e`), 
                       y = `Total kT CO2e`,
                       fill = variable)) +
  geom_col() +
  #scale_fill_manual(values = detailed_pal) +
  theme(legend.position = "none") +
  labs(x = "Emissions source") +
  coord_flip()
CSE all territorial emissions by category (Hampshire, 2019 ordered by emissions value)

Figure 4.1: CSE all territorial emissions by category (Hampshire, 2019 ordered by emissions value)

# p <- ggplot2::ggplot(subsetDT, aes(x = `Calendar Year`, y = `Territorial emissions (kt CO2)`,
#                             fill = subSectorLabel,
#                             colour = subSectorLabel)) +
#   geom_col(position = "stack") +
#   scale_colour_manual(values = detailed_pal) +
#   scale_fill_manual(values = detailed_pal) #
# p

Figure 4.2 shows a cumulative emissions plot for the CSE territorial data ordered by the emissions source’s magnitude. The largest increments are therefore due to personal transport, power generation, domestic gas use and aviation. The plot shows the sources which comprise 50%, 75% and 90% of the total emissions. The plot curls due to the source categories with negative emissions such that the final point represents the total ‘net’ emissions.

t <- hampshire_cse_terr_Totals[order(-`Total kT CO2e`)]
t[, cumulative := cumsum(`Total kT CO2e`)]

pc_50 <- 0.5*(sum(t$`Total kT CO2e`))
pc_75 <- 0.75*(sum(t$`Total kT CO2e`))
pc_90 <- 0.90*(sum(t$`Total kT CO2e`))

p <- ggplot2::ggplot(t, aes(x = reorder(variable, -`Total kT CO2e`), 
                       y = cumulative,
                       colour = variable)) +
  geom_point() +
  ylim(0,NA) +
  theme(legend.position = "none") +
  labs(x = "Emissions source",
       y = "Cumulative kT CO2e/annum",
       cap = "Vertical lines % of net emissions") +
  coord_flip()

# add reference lines
p + 
  geom_hline(aes(yintercept = pc_50), colour = "grey") +
  geom_hline(aes(yintercept = pc_75), colour = "grey") +
  geom_hline(aes(yintercept = pc_90), colour = "grey") +
  annotate("text", x = "Other Transport (t CO2e)", y = pc_50, label = "50%", colour = "grey") +
  annotate("text", x = "Other Transport (t CO2e)", y = pc_75, label = "75%", colour = "grey") +
  annotate("text", x = "Other Transport (t CO2e)", y = pc_90, label = "90%", colour = "grey")
Plot of cumulative emissions (BEIS, 2019)

Figure 4.2: Plot of cumulative emissions (BEIS, 2019)

5 Consumption-based emissions (CSE data)

These are calculated under the consumption emissions method and include all greenhouse gas emissions.

5.1 Latest totals for ‘Hampshire’

Table 5.1 shows the total emissions for 2019.

t <- hampshire_cse_consumption_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000)]
makeFlexTable(t, cap = "CSE consumption emissions (Hampshire, 2019)")
sumCSECons_kt <- sum(hampshire_cse_consumption_abs_DT$value)/1000

Table 5.2 shows the total emissions for 2019 by category. Figure 5.1 shows the data as a bar plot. The largest emissions sources under this method are clearly visible (purchased goods, services and food/diet and gas-use). Note that some of the categories do not exactly match those used in the BEIS data. Ignore the (t CO2e) in the label - the plot shows kT for easy comparison.

hampshire_cse_cons_Totals <- hampshire_cse_consumption_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000), keyby = .(variable)]

library(stringr)
hampshire_cse_cons_Totals[, variable_n := stringr::str_remove(variable, "Consumption of goods and services - ")]

absTotal <- sum(hampshire_cse_consumption_abs_DT[, abs(value)])/1000
                
hampshire_cse_cons_Totals[, `% of gross` := 100*(`Total kT CO2e`/absTotal)]

makeFlexTable(hampshire_cse_cons_Totals, cap = "CSE all consumption emissions by category (Hampshire, 2019)")
ggplot2::ggplot(hampshire_cse_cons_Totals, aes(x = reorder(variable_n, -`Total kT CO2e`), 
                       y = `Total kT CO2e`,
                       fill = variable_n)) +
  geom_col() +
  #scale_fill_manual(values = detailed_pal) +
  theme(legend.position = "none") +
  labs(x = "Emissions source") +
  coord_flip()
CSE all territorial emissions by category (Hampshire, 2019 ordered by emissions value)

Figure 5.1: CSE all territorial emissions by category (Hampshire, 2019 ordered by emissions value)

Figure 5.2 shows a cumulative emissions plot for the CSE territorial data ordered by the emissions source’s magnitude. The largest increments are therefore due to consumpiton of goods and services, food and diet (meat & fish) and mains gas use. The plot shows the sources which comprise 50%, 75% and 90% of the total emissions.

t <- hampshire_cse_cons_Totals[order(-`Total kT CO2e`)]
t[, cumulative := cumsum(`Total kT CO2e`)]

pc_50 <- 0.5*(sum(t$`Total kT CO2e`))
pc_75 <- 0.75*(sum(t$`Total kT CO2e`))
pc_90 <- 0.90*(sum(t$`Total kT CO2e`))

p <- ggplot2::ggplot(t, aes(x = reorder(variable_n, -`Total kT CO2e`), 
                       y = cumulative,
                       colour = variable_n)) +
  geom_point() +
  ylim(0,NA) +
  theme(legend.position = "none") +
  labs(x = "Emissions source",
       y = "Cumulative kT CO2e/annum",
       cap = "Vertical lines % of net emissions") +
  coord_flip()

# add reference lines
p + 
  geom_hline(aes(yintercept = pc_50), colour = "grey") +
  geom_hline(aes(yintercept = pc_75), colour = "grey") +
  geom_hline(aes(yintercept = pc_90), colour = "grey") +
  annotate("text", x = "Housing - Oil (t CO2e)", y = pc_50, label = "50%", colour = "grey") +
  annotate("text", x = "Housing - Oil (t CO2e)", y = pc_75, label = "75%", colour = "grey") +
  annotate("text", x = "Housing - Oil (t CO2e)", y = pc_90, label = "90%", colour = "grey")
Plot of cumulative emissions (BEIS, 2019)

Figure 5.2: Plot of cumulative emissions (BEIS, 2019)

6 Discussion

cse_terr_powerGen <- hampshire_cse_terr_Totals[variable %like% "Power"]$`Total kT CO2e`
cse_terr_aviation <- hampshire_cse_terr_Totals[variable %like% "Aviation"]$`Total kT CO2e`
cse_terr_shipping <- hampshire_cse_terr_Totals[variable %like% "Shipping"]$`Total kT CO2e`
cse_terr_fgas <- hampshire_cse_terr_Totals[variable %like% "F-gases"]$`Total kT CO2e`
cse_terr_waste <- hampshire_cse_terr_Totals[variable %like% "Waste"]$`Total kT CO2e`
cse_terr_AgricLivestock <- hampshire_cse_terr_Totals[variable %like% "Agriculture - Livestock"]$`Total kT CO2e`

cse_terr_diff <- cse_terr_powerGen + cse_terr_aviation + cse_terr_shipping + cse_terr_fgas + cse_terr_waste

pc_diff <- 100*(cse_terr_diff/(sumCSETerr_kt - sumBEIS_kt))

pc_tot_diff <- 100*((sumCSETerr_kt-sumBEIS_kt)/sumBEIS_kt)

Overall, the total GHG emissions for Hampshire under different methodologies are:

  • BEIS territorial CO2 only: 8,421 kT CO2
  • CSE territorial emissions (all GHG): 14,389 kT CO2e - 71 % higher than the BEIS total
  • CSE consumption emissions (all GHG): 13,633 kT CO2e - unusually this value is smaller than the territorial based emissions estimate

6.1 BEIS CO2 emissions

h_beis2019 <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019]
beis_trans <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Motorway" | `LA CO2 Sub-sector` %like% "roads", `Territorial emissions (kt CO2)`])

beis_motorways <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Motorway", `Territorial emissions (kt CO2)`])

beis_d_gas <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Domestic Gas", `Territorial emissions (kt CO2)`])
beis_d_elec <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Domestic Electricity", `Territorial emissions (kt CO2)`])

beis_forest <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Forest", `Territorial emissions (kt CO2)`])

beis_grassland <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Grass", `Territorial emissions (kt CO2)`])

beis_wetlands <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Wetland", `Territorial emissions (kt CO2)`])

beis_crop <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Crop", `Territorial emissions (kt CO2)`])

h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "Gas",
                             0,
                             `Territorial emissions (kt CO2)`)]

h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "Electricity",
                             0,
                             `Territorial emissions (kt CO2)`)]

h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "roads",
                             0,
                             `Territorial emissions (kt CO2)`)]

allSum <- sum(h_beis2019$`Territorial emissions (kt CO2)`)
zeroCsum <- sum(h_beis2019$zeroC)

If we focus on BEIS territorial CO2 only then the main sources of emissions are:

  • Transport (Motorways, A roads and minor roads combined): 3,838 kT (2019)
  • Domestic gas: 1,716 kT (2019)
  • Domestic electricity: 689 kT (2019)

Negative emissions (sequestration) sources are:

  • Forest: -484 kT (2019)
  • Grassland: -195 kT (2019) - note that this does not allow for methane emissions from grazing livestock
  • Wetlands: -0.262 kT (2019) - this is perhaps surprisingly small given the coastal nature of the County and the existence of a number of wetland habitats

As Figure 3.1 showed, these levels of sequestration currently provide a negligible offset to the overall emissions. Note also that cropland is a net emitter at 138 kT (2019).

Figure 3.4 showed that the only emissions sources showing substantial decreases over time have been electricity due to grid decarbonisation and (potentially) reductions in some industrial activity as well as the use of ‘Other fuels’ by industry. Although emissions from domestic gas use have also fallen over time they appear to have stabilised since 2014. Perhaps of most concern given their dominant contribution however is the relative stability of road transport emissions over the 2005 - 2019 period.

Under this method of calculation, if we were to entirely decarbonise the electricity grid and eradicate emissions from gas use as well as from use of A Roads and Minor roads we would have ‘solved’ 67 % of the problem. 18 % of emissions are due to motorway use of which some could be de-carbonised using electric vehicles or zero-carbon freight fuels if proven. However, reducing the ratcheting of transport demand seems key alongside changes in the technical de-carbonisation of the service.

6.2 CSE territorial CO2e (all GHG) emissions

cse_terr_Transport <- hampshire_cse_terr_Totals[variable %like% "Road Trans"]$`Total kT CO2e`

beis_terr_Transport <- sum(hampshire_beis_terr_Totals[subSectorLabelFact %like% "road" |
                                                        subSectorLabelFact %like% "Motorway"]$`Total kT CO2`)

cse_terr_DomGas <- hampshire_cse_terr_Totals[variable %like% "Housing - Mains gas"]$`Total kT CO2e`
beis_terr_DomGas <- hampshire_beis_terr_Totals[subSectorLabelFact %like% "Domestic Gas"]$`Total kT CO2`

If we focus on CSE territorial emissions, which include all emissions, the main sources are:

  • Road transport (4,055 T CO2e compared to the BEIS total road transport figure of 3,838 T CO2e)
  • Power generation (2,173 T CO2e)
  • Housing (domestic) gas (1,657 T CO2e compared to the BEIS figure of 1,716 T CO2e)
  • Aviation (1,203 T CO2e - flights and freight)

These figures draw attention to the significant emissions due to aviation which are not included in the BEIS LA level data. Indeed, 83 % of the 71 % increase from the BEIS figure comprises emissions from:

  • Power generation (2,173 kT CO2e)
  • Aviation (1,203 kT CO2e - i.e. flights & freight),
  • Waste management (704 kT CO2e - methane from landfill and CO2 from incineration),
  • Shipping (479 kT CO2e) and
  • F-Gases (374 kT CO2e)

Note that under the CSE approach, Agriculture - Livestock and crop-related emissions amount to 457 T CO2e compared to the BEIS value for Cropland at 138 T CO2e which gives some indication of the additional emissions due to methane (noting that fuel used for agriculture is already in a separate category under the CSE approach - see methodology, p15).

6.3 CSE consumption CO2e (all GHG) emissions

cse_cons_purch <- hampshire_cse_cons_Totals[variable %like% "Purchase of goods"]$`Total kT CO2`
cse_cons_food_meat <- hampshire_cse_cons_Totals[variable %like% "Meat and fish"]$`Total kT CO2`
cse_cons_DomGas <- hampshire_cse_cons_Totals[variable %like% "Housing - Mains gas"]$`Total kT CO2`
cse_cons_food_other <- hampshire_cse_cons_Totals[variable %like% "Other food and drink"]$`Total kT CO2`
cse_cons_private_trans <- hampshire_cse_cons_Totals[variable %like% "Private transport"]$`Total kT CO2`

cse_cons_flights <- hampshire_cse_cons_Totals[variable %like% "Flights"]$`Total kT CO2`

cons_sum <- cse_cons_purch + cse_cons_food_meat + cse_cons_DomGas + cse_cons_food_other + cse_cons_private_trans

con_sum_pc <- 100*(cons_sum/sumCSECons_kt)

Finally, if we focus on CSE consumption-based emissions which include emissions ‘outsourced’ to other geographical areas (including overseas), the main emissions sources comprising 65 % of emissions are:

  • Purchased goods (2,623 kT CO2e)
  • Food and diet - meat & fish (1,722 kT CO2e)
  • Domestic gas ( 1,657 kT CO2e as before)
  • Food and diet - other (1,414 kT CO2e)
  • Private transport (1,378 kT CO2e)

Emissions due to Flights (970 kT CO2e) are lower than the territorial based Aviation emissions values since emissions due to freight are included under ‘Good and services.’

This approach to emissions accounting shows the extent to which the consumption of goods and services, diet and food as well as transport and domestic gas use dominate Hampshire’s ‘consumption’ emissions footprint.

7 Summary

Which of these accounting methods we choose to focus on depends what we want to show and what we want to achieve. The same is true of the emissions subcategories. The BEIS data gives a partial view on territorial emissions as it excludes all non-CO2 emissions (such as methane from livestock) and also excludes aviation (flights & freight) and shipping.

The CSE territorial emissions data includes these ‘missing’ emissions and so gives a much larger total as they are major contributors.

Finally, the CSE consumption emissions data demonstrates the significant contribution that consumption of services as well as food and diet make to our ‘extended’ emissions footprint if we consider the emissions we have effectively outsourced to other geographical areas. Nevertheless, emissions due to domestic gas and private transport remain substantial under this approach.

Future work could:

  • assess the extent to which currently proposed Programmes address the major emissions sources under each emissions accounting method and review the capability of County and District Authorities in influencing these sources (c.f. the Committee on Climate Change’s recommendations as part of the 6th Carbon Budget and the more recent National Audit Office 2021 report on local government and net zero in England);
  • analyse the district level emissions to understand their distributions according to the different methodologies and hence inform district level prioritisation where this is not already in hand;
  • work with BEIS to ensure the inclusion of all territorial GHG emissions in the annual BEIS district level dataset.

8 R environment

Analysis completed in 10.33 seconds ( 0.17 minutes) using knitr in RStudio with R version 4.1.1 (2021-08-10) running on x86_64-apple-darwin17.0.

8.1 R packages used

  • base R (R Core Team 2016)
  • bookdown (Xie 2016a)
  • data.table (Dowle et al. 2015)
  • flextable (Gohel 2021)
  • knitr (Xie 2016b)
  • rmarkdown (Allaire et al. 2018)

References

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, and Winston Chang. 2018. Rmarkdown: Dynamic Documents for r. https://CRAN.R-project.org/package=rmarkdown.
Dowle, M, A Srinivasan, T Short, S Lianoglou with contributions from R Saporta, and E Antonyan. 2015. Data.table: Extension of Data.frame. https://CRAN.R-project.org/package=data.table.
Gohel, David. 2021. Flextable: Functions for Tabular Reporting. https://CRAN.R-project.org/package=flextable.
R Core Team. 2016. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Xie, Yihui. 2016a. Bookdown: Authoring Books and Technical Documents with R Markdown. Boca Raton, Florida: Chapman; Hall/CRC. https://github.com/rstudio/bookdown.
———. 2016b. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://CRAN.R-project.org/package=knitr.